In a distributed computing environment, individual computing units or nodes are interconnected via a network to form a cluster. By connecting the nodes in this manner, the individual nodes may communicate with one another to accomplish a single task or process a unit of work distributed among the individual computing units. One way to accomplish such a task is to run multiple images of a single program or component on several of the individual nodes. By concurrently running the images on individual nodes, different portions of the unit of work may be jointly processed at the same time. Distributing the unit of work between multiple components in this manner allows the task or unit of work to be more effectively processed.
From time to time, the program being processed by the individual components is required to be updated from a current version to a newer version in order to enhance the functionality or to address problems associated with the current version of the program. One technique for performing these updates or migrations is to first shut down all of the nodes of the system. After all of the nodes have been deactivated, the current version of the component is updated on each of the nodes. Then, after all of the components have been migrated, the nodes are reactivated running the newer version of the program. However, since the entire system must be deactivated while the individual components are updated, this method is unacceptably disruptive with continuous availability or mission critical systems running twenty-four hours a day.
In the alternative, another technique allows components within the computing environment to be migrated or updated individually. In this technique, the selected component is deactivated, updated and later reactivated within the cluster without having to deactivate the entire cluster. However, with this technique, a user must consciously be aware of utilizing only the functionality supported by older version components. Thus, because a user must actively be aware of limitations of nodes running the older versions of the component, this method proves to be unduly burdensome to the users of the system.
Thus, a need exists for a capability that allows upgrading or migrating of individual components in a computing environment which does not require the entire cluster to be deactivated. Furthermore, a need exists for a capability which does not require a user to be consciously aware of the limitations of the older version components.